#ifndef HEADER_H
#define HEADER_H
#include "constants.h"
#include<stdio.h>
typedef struct mainHeader
{
    char f_label[CHARSIZE];
    int max_fd;
    int f_usedfDes;
    unsigned long size;
    int num_blocks;
    long fList;
    long fDes;
    long fBlock;
} mainheader;

typedef struct fileDescriptor
{
    char f_name[CHARSIZE];
    char f_path[CHARSIZE];
    char f_type[TYPESIZE];
    unsigned long f_size;
    long int block_number;

} fdesc;

typedef struct freeList
{
    long f_bnumber;
    long f_bfree;
} freelist;

typedef struct block
{
    unsigned char f_buffer[DATASIZE];
} writeBlock;
typedef struct globalStruct
{
    struct mainHeader *vfs_read;
    struct freeList *list_read;
    struct fileDescriptor *fdes_read;
    int num_used_fd;
    int is_mounted;
    FILE *mountpoint;

} mainStr;
mainStr *mainstr;

typedef struct globalDataStr
{
    struct bst_node* bst;
    struct nary_tree* ntree;
    struct hash* htable;
} dataStr;
dataStr *datastr;
fdesc **send_fd;
unsigned long **listarr;
#endif
